package br.com.esporte.repositorio.DAO.imp;

import java.util.Arrays;
import java.util.List;

import org.hibernate.Query;
import org.springframework.stereotype.Repository;

import br.com.esporte.negocios.entidade.imp.GrupoEsporteGrupo;
import br.com.esporte.negocios.entidade.imp.Usuario;
import br.com.esporte.negocios.entidade.util.TipoEsporteGrupoEnum;
import br.com.esporte.repositorio.DAO.IGrupoEsporteGrupoDAO;
import br.com.esporte.repositorio.filtro.imp.FiltroGrupoEsporteGrupo;

/**
 * @author Milton Domingues
 */
@Repository
public class GrupoEsporteGrupoDAO extends HibernateGenericDAO<GrupoEsporteGrupo, Long, FiltroGrupoEsporteGrupo> implements IGrupoEsporteGrupoDAO {

	public GrupoEsporteGrupoDAO() {
		super(GrupoEsporteGrupo.class);
	}

	@Override
	@SuppressWarnings("unchecked")
	public List<GrupoEsporteGrupo> consultarEsporteGrupoUsuario(TipoEsporteGrupoEnum tipo, Usuario usuario){
		StringBuilder hql = new StringBuilder();

		hql.append("SELECT grupo FROM GrupoEsporteGrupo grupo INNER JOIN grupo.usuarios as usuario WHERE grupo.tipo = :tipo AND usuario IN (:usuarios) ");

		Query query = this.createQuery(hql.toString());

		query.setParameter("tipo", tipo);
		query.setParameterList("usuarios", Arrays.asList(usuario));

		return query.list();
	}

}
